/**
 * json配置举例，更多配置请看 IConfigSchema
 * @author luguoxiang
 * @date 2022/7/5
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
import { basePath } from './api';
import { MenuComponent } from '@/types/interface';
import { fileSize } from '@/soar';

export const cacheNames = {
  os: '操作系统',
  archBits: '架构位数',
  version: '版本号',
  totalNetInputBytes: '接收量(字节)',
  totalNetOutputBytes: '发送量(字节)',
  totalConnectionsReceived: '总共连接数',
  connectedClients: '当前连接数',
  blockedClients: '阻塞客户端数',
  totalCommandsProcessed: '处理过的命令数',
  instantaneousOpsPerSec: '每秒处理的命令数',
  maxmemoryPolicy: '淘汰策略',
  memFragmentationRatio: '碎片率',
  keyspaceHits: '成功查询 key 的次数',
  keyspaceMisses: '失败查询 key 的次数',
  expiredKeys: '已过期并被删除的 key 数量',
  evictedKeys: '因内存不足被淘汰的 key 数量',
  expires: '设置了过期时间的 key 数量',
  aofEnabled: '是否开启 AOF 持久化',
  rdbBgsaveInProgress: '是否正在执行 RDB 快照保存',
  aofRewriteInProgress: '是否正在进行 AOF 重写',
  aofCurrentSize: '当前 AOF 文件大小',
  rdbLastSaveTime: '上次成功保存 RDB 的时间戳',
  aofDelayedFsync: '延迟 fsync 的次数',
};

export const diskColumns = [
  {
    colKey: 'name',
    title: '名称',
    ellipsis: true,
  },
  {
    colKey: 'total',
    title: '总共',
    ellipsis: true,
    cell(_, { row }) {
      return fileSize(row.total);
    },
  },
  {
    colKey: 'free',
    title: '可用',
    ellipsis: true,
    cell(_, { row }) {
      return fileSize(row.free);
    },
  },
];

/**
 * 组件配置（用于生成菜单数据）
 */
export const COMPONENTS: MenuComponent[] = [
  {
    title: '服务监控',
    component: () => import('./Index.vue'),
    path: '/system/monitor/server',
    sort: 50,
    keepalive: false,
    icon: 'bulletpoint',
    permits: [`GET${basePath}/disk`, `GET${basePath}/jvm`, `GET${basePath}/cache`],
    elements: [],
  },
];
